#include <iostream>
#include <cstdio>
#include <string>
#include <vector>
#include <queue>
#include <algorithm>

using namespace std;

int n;
int inPos[1000100];
int maxEnd[1000100];
int main()
{
    int t,res;
    cin>>n;
    res=-1;
    for(int i=1;i<=n;i++) scanf("%d",&t),inPos[t]=i;
    for(int i=0;i<n;i++)
    {
        scanf("%d",&t);
        int l,r,num;
        l=1;num=inPos[t];r=i+1;
        while(l<r)
        {
            int mid=(l+r)>>1;
            if(maxEnd[mid]<num) r=mid;
            else l=mid+1;
        }
        maxEnd[r]=num;
        res=max(res,r);
    }
    cout<<res<<endl;
	return 0;
}
